package fab.geom 
{
	import flash.geom.Point;
	/**
	 * Définit une lentille = l'intersection entre 2 cercles
	 * pour 2 cercles donnés cercle1:Circle et cercle2:Circle, la lentille est définie par les angles de sortie et d'entree dans la lentille, dans le sens trigo inverse, et pour chaque cercle.
	 * les points du plan aux 2 intersections sont calculés, nommés entre et sortie p/r au cercle1.
	 * @author fab
	 */
	public class Lentille
	{
		public var cercle1:Circle;
		public var cercle2:Circle;
		public var cercle1_sortie:Number;
		public var cercle1_entree:Number;
		public var cercle2_sortie:Number;
		public var cercle2_entree:Number;
		public var entree:Point;
		public var sortie:Point;

		public function Lentille( c1:Circle, c2:Circle, angle:Number, angle_inter1:Number, angle_inter2:Number ) 
		{
			cercle1 = c1;
			cercle2 = c2;
			cercle1_sortie = Circle.positive_angle( angle + angle_inter1 );// respecte le sens inverse trigo : sortie = sortie de lentille, entree = entrée de lentille
			cercle1_entree = Circle.positive_angle( angle - angle_inter1 );
			cercle2_sortie = Circle.positive_angle( angle + Math.PI + angle_inter2 );
			cercle2_entree = Circle.positive_angle( angle + Math.PI - angle_inter2 );
			entree = cercle1.pointAt( cercle1_entree );	
			sortie = cercle1.pointAt( cercle1_sortie );
		}
		public function toString():String 
		{
			return "Lentille \tC1 e/s :" + Circle.rad2Deg( cercle1_entree ) + " " + Circle.rad2Deg( cercle1_sortie ) + "\tC2 e/s : " + Circle.rad2Deg( cercle2_entree ) + " " + Circle.rad2Deg( cercle2_sortie ) + "\n";
		}
	}
}